package kuzha.ast;

public interface AstVisitor2<TARG, TRET> {
	public TRET visit(ArrayListLiteral node, TARG object);
	public TRET visit(AssertStatement node, TARG object);
	public TRET visit(AssignExpression node, TARG object);
	public TRET visit(BinaryExpression node, TARG object);
	public TRET visit(StatementList node, TARG object);
	public TRET visit(BreakStatement node, TARG object);
	public TRET visit(CaseElement node, TARG object);
	public TRET visit(CaseStatement node, TARG object);
	public TRET visit(Constant node, TARG object);
	public TRET visit(ContinueStatement node, TARG object);
	public TRET visit(EmptyStatement node, TARG object);
	public TRET visit(ExpressionStatement node, TARG object);
	public TRET visit(ForStatement node, TARG object);
	public TRET visit(FunctionArgument node, TARG object);
	public TRET visit(FunctionLiteral node, TARG object);
	public TRET visit(GetSlotExpression node, TARG object);
	public TRET visit(GetSpecialExpression node, TARG object);
	public TRET visit(IfStatement node, TARG object);
	public TRET visit(IfStatementTest node, TARG object);
	public TRET visit(IndexExpression node, TARG object);
	public TRET visit(LetStatement node, TARG object);
	public TRET visit(LockStatement node, TARG object);
	public TRET visit(MapElement node, TARG object);
	public TRET visit(MapLiteral node, TARG object);
	public TRET visit(ObjectLiteral node, TARG object);
	public TRET visit(Paren node, TARG object);
	public TRET visit(PostArgument node, TARG object);
	public TRET visit(PostExpression node, TARG object);
	public TRET visit(PostMessage node, TARG object);
	public TRET visit(PostSpecialExpression node, TARG object);
	public TRET visit(RangeListLiteral node, TARG object);
	public TRET visit(ReturnStatement node, TARG object);
	public TRET visit(SetLiteral node, TARG object);
	public TRET visit(SliceExpression node, TARG object);
	public TRET visit(StructLiteral node, TARG object);
	public TRET visit(Symbol node, TARG object);
	public TRET visit(ThrowStatement node, TARG object);
	public TRET visit(TriaryExpression node, TARG object);
	public TRET visit(TryCatchStatement node, TARG object);
	public TRET visit(TryFinallyStatement node, TARG object);
	public TRET visit(UnaryExpression node, TARG object);
	public TRET visit(Variable node, TARG object);
	public TRET visit(WhileStatement node, TARG object);
}
